package com.resign.carl.composite.api;

/**
 * 菜单组件:为叶子结点和组合结点提供一个共同的接口
 * Created by carl.zhao on 2016/6/16.
 */
public abstract class MenuComponent {

    // 我们把"组合"方法组织在一起。即新增、删除和取得菜单组件
    public void add(MenuComponent menuComponent){
        throw new UnsupportedOperationException();
    }

    public void remove(MenuComponent menuComponent){
        throw new UnsupportedOperationException();
    }

    public MenuComponent getChild(int i){
        throw new UnsupportedOperationException();
    }

    // 这些"操作"方法:它们被菜单项使用，其中有一些可用在菜单上
    public String getName(){
        throw new UnsupportedOperationException();
    }

    public String  getDescription(){
        throw new UnsupportedOperationException();
    }

    public double getPrice(){
        throw new UnsupportedOperationException();
    }

    public boolean  isVegetarian(){
        throw new UnsupportedOperationException();
    }

    // print是一个"操作"方法,这个方法同时被菜单和菜单项所实现
    // 但我们还是在这里提供了默认的操作
    public void print(){
        throw new UnsupportedOperationException();
    }

}
